#ifndef HASH_SUPPORT_H_
#define HASH_SUPPORT_H_

#include <ext/hash_map>
namespace stdext
{
	using namespace __gnu_cxx;
}

#include "graph_support/GraphSupport.h"

namespace GRAPH_SUPPORT_NS
{
namespace utils
{

class Hash4StdString
{
public:
	size_t operator () ( const std::string & a ) const
	{
		return stdext::__stl_hash_string( a.c_str() );
	}
};

template< typename T >
class Hash4AbstractPointer
{
public:
	size_t operator () ( const T * t ) const
	{
		size_t a = reinterpret_cast< int >( t );
		size_t b = ( a >> 4 ) ^ 113;
		size_t c = a * a;
		return c ^ b;
	}
};

}
}
#endif /* HASH_SUPPORT_H_ */
